home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / qed_397 / sourcen / rsc.c < prev    next >
C/C++ Source or Header  |  1997-01-14  |  7KB  |  244 lines

  1. #include "global.h"
  2. #include "fontsel.h"
  3. #include "obj.h"
  4. #include "scroll.h"
  5. #include "rsc.h"
  6.  
  7. /*
  8.  * exportierte Variablen
  9.  */
  10. OBJECT     *menu;
  11. OBJECT     *desktop;
  12. OBJECT     *about;
  13. OBJECT     *about2;
  14. OBJECT     *printer;
  15. OBJECT     *textinfo;
  16. OBJECT     *diskinfo;
  17. OBJECT     *prjinfo;
  18. OBJECT    *blockinfo;
  19. OBJECT     *replace;
  20. OBJECT    *repask;
  21. OBJECT     *diskfind;
  22. OBJECT     *pos;
  23. OBJECT     *marken;
  24. OBJECT     *funktionstasten;
  25. OBJECT     *makrorep;
  26. OBJECT    *zeichentab;
  27. OBJECT    *umlautkonv;
  28. OBJECT     *clearup;
  29. OBJECT     *fontsel;
  30. OBJECT     *globalop;
  31. OBJECT     *localop;
  32. OBJECT     *muster;
  33. OBJECT     *musterchg;
  34. OBJECT    *autosave;
  35. OBJECT    *fehler;
  36. OBJECT    *seoptions;
  37.  
  38. OBJECT     *aktion;
  39. OBJECT     *prjscan;
  40. OBJECT     *icons;
  41. OBJECT     *winicon;
  42.  
  43. OBJECT     *fhilfe;
  44. OBJECT     *rphilfe;
  45. OBJECT     *dfhilfe;
  46. OBJECT     *popups;
  47. OBJECT     *strings;
  48.  
  49. UBYTE        **alertmsg;
  50. UBYTE        **copy_str;
  51.  
  52. WORD        icon_anzahl;
  53.  
  54. /****** DEFINES ************************************************************/
  55.  
  56. /****** TYPES **************************************************************/
  57.  
  58. /****** VARIABLES **********************************************************/
  59.  
  60. LOCAL    OBBLK        usr_block[1500];
  61.  
  62. LOCAL    OBJECT    *setup;
  63. LOCAL BOOLEAN    dial3D, rsc_init = FALSE;
  64. LOCAL WORD        xrsrc_handle, xrsrc_data[16];
  65.  
  66. /***************************************************************************/
  67. /* Initialisieren des Moduls                                                                */
  68. /***************************************************************************/
  69.  
  70.  
  71. BOOLEAN init_resource (VOID)
  72. {
  73.     PATH        rsc_path = "qed.rsc";
  74.     WORD        x, y, w, h, i;
  75.     WORD        workout[57];
  76.     OBJECT    *ptr;
  77.  
  78.     Busy_mouse();
  79.  
  80.     xrsrc_handle = open_vwork(workout);
  81.     init_xrsrc(xrsrc_handle, (GRECT *)&desk, sys_wchar, sys_hchar);
  82.     shel_find(rsc_path);
  83.     if (file_exist(rsc_path))
  84.         rsc_init = xrsrc_load(rsc_path, xrsrc_data);
  85.     if (!rsc_init)
  86.     {
  87.         UBYTE    *p;
  88.  
  89.         p = getenv("QED");
  90.         if (p != NULL)
  91.         {
  92.             strcpy(rsc_path, p);
  93.             if (make_normalpath(rsc_path, FALSE))
  94.             {
  95.                 strcat(rsc_path, "qed.rsc");
  96.                 if (file_exist(rsc_path))
  97.                     rsc_init = xrsrc_load (rsc_path, xrsrc_data);
  98.             }
  99.         }
  100.         if (!rsc_init)
  101.             form_alert (1, "[3][Resource-File|qed.rsc??][ EXIT ]");
  102.     }
  103.  
  104.     if (rsc_init)
  105.     {
  106.         xrsrc_gaddr (R_TREE, SETUP,        &setup, xrsrc_data);
  107.         dial3D = get_select(setup, SETUP3D);
  108.  
  109.         xrsrc_gaddr (R_FRSTR, SCREEN,    &alertmsg, xrsrc_data);
  110.  
  111.         xrsrc_gaddr (R_TREE, MENUTREE,    &menu, xrsrc_data);
  112.         xrsrc_gaddr (R_TREE, ABOUT,        &about, xrsrc_data);
  113.         xrsrc_gaddr (R_TREE, ABOUT2,    &about2, xrsrc_data);
  114.         xrsrc_gaddr (R_TREE, REPLACE,    &replace, xrsrc_data);
  115.         xrsrc_gaddr (R_TREE, REPASK,    &repask, xrsrc_data);
  116.         xrsrc_gaddr (R_TREE, LOCALOP,    &localop, xrsrc_data);
  117.         xrsrc_gaddr (R_TREE, GLOBALOP,    &globalop, xrsrc_data);
  118.         xrsrc_gaddr (R_TREE, POS,        &pos, xrsrc_data);
  119.         xrsrc_gaddr (R_TREE, PRINTER,    &printer, xrsrc_data);
  120.         xrsrc_gaddr (R_TREE, TEXTINFO,    &textinfo, xrsrc_data);
  121.         xrsrc_gaddr (R_TREE, DESKTOP,    &desktop, xrsrc_data);
  122.         xrsrc_gaddr (R_TREE, FONT,        &fontsel, xrsrc_data);
  123.         xrsrc_gaddr (R_TREE, AKTION,    &aktion, xrsrc_data);
  124.         xrsrc_gaddr (R_TREE, FUNKTION,    &funktionstasten, xrsrc_data);
  125.         xrsrc_gaddr (R_TREE, DISKFIND,    &diskfind, xrsrc_data);
  126.         xrsrc_gaddr (R_TREE, ICONS,        &icons, xrsrc_data);
  127.         xrsrc_gaddr (R_TREE, WINICON,    &winicon, xrsrc_data);
  128.         xrsrc_gaddr (R_TREE, FHILFE,    &fhilfe, xrsrc_data);
  129.         xrsrc_gaddr (R_TREE, CLEARUP,    &clearup, xrsrc_data);
  130.         xrsrc_gaddr (R_TREE, PRJINFO,    &prjinfo, xrsrc_data);
  131.         xrsrc_gaddr (R_TREE, PRJSCAN,    &prjscan, xrsrc_data);
  132.         xrsrc_gaddr (R_TREE, RPHILFE,    &rphilfe, xrsrc_data);
  133.         xrsrc_gaddr (R_TREE, DISKINFOS,    &diskinfo, xrsrc_data);
  134.         xrsrc_gaddr (R_TREE, MARKEN,    &marken, xrsrc_data);
  135.         xrsrc_gaddr (R_TREE, DFHILFE,    &dfhilfe, xrsrc_data);
  136.         xrsrc_gaddr (R_TREE, POPUPS,    &popups, xrsrc_data);
  137.         xrsrc_gaddr (R_TREE, MUSTER,    &muster, xrsrc_data);
  138.         xrsrc_gaddr (R_TREE, MUSTERCH, &musterchg, xrsrc_data);
  139.         xrsrc_gaddr (R_TREE, MAKROREP, &makrorep, xrsrc_data);
  140.         xrsrc_gaddr (R_TREE, UMLAUTE,         ¨autkonv, xrsrc_data);
  141.         xrsrc_gaddr (R_TREE, BLOCKINFO, &blockinfo, xrsrc_data);
  142.         xrsrc_gaddr (R_TREE, AUTOSAVE,  &autosave, xrsrc_data);
  143.         xrsrc_gaddr (R_TREE, FEHLER,      &fehler, xrsrc_data);
  144.         xrsrc_gaddr (R_TREE, SEOPTION, &seoptions, xrsrc_data);
  145.         xrsrc_gaddr (R_TREE, STRINGS,    &strings, xrsrc_data);
  146.  
  147.         nkc_init(NKI_NO200HZ, 0, 0);
  148.         dial_init(Malloc, Mfree, NULL, NULL, NULL, dial3D, usr_block, 1500);
  149.  
  150.         dial_fix (menu);
  151.         dial_fix (about);
  152.         dial_fix (about2);
  153.         dial_fix (replace);
  154.         dial_fix (repask);
  155.         dial_fix (globalop);
  156.         dial_fix (localop);
  157.         dial_fix (pos);
  158.         dial_fix (printer);
  159.         dial_fix (textinfo);
  160.         dial_fix (desktop);
  161.         dial_fix (fontsel);
  162.         dial_fix (aktion);
  163.         dial_fix (funktionstasten);
  164.         dial_fix (diskfind);
  165.         dial_fix (fhilfe);
  166.         dial_fix (clearup);
  167.         dial_fix (prjinfo);
  168.         dial_fix (prjscan);
  169.         dial_fix (rphilfe);
  170.         dial_fix (diskinfo);
  171.         dial_fix (marken);
  172.         dial_fix (dfhilfe);
  173.         dial_fix (popups);
  174.         dial_fix (muster);
  175.         dial_fix (musterchg);
  176.         dial_fix (makrorep);
  177.         dial_fix (umlautkonv);
  178.         dial_fix (blockinfo);
  179.         dial_fix (fehler);
  180.         dial_fix (icons);
  181.         dial_fix (winicon);
  182.         dial_fix (seoptions);
  183.         dial_fix (autosave);
  184.  
  185.         /* Titel der Zeichenauswahl eintragen */
  186.         ascii_head(STRING(ZEICHSTR));
  187.  
  188.         desktop->ob_x = 0;
  189.         desktop->ob_y = 0;
  190.         if (desk.x+desk.w > desktop->ob_width)        /* Falls Desktop breiter Objektbreite */
  191.             desktop->ob_width = desk.x+desk.w;        /* Große Bildschirme */
  192.         if (desk.y+desk.h > desktop->ob_height)    /* Falls Desktop höher Objekthöhe */
  193.             desktop->ob_height = desk.y+desk.h;        /* Große Bildschirme */
  194.  
  195.         desktop[FKEYS].ob_y = desk.y+desk.h-desktop[FKEYS].ob_height-5;
  196.         desktop[FKEYS].ob_x = (desk.w-desktop[FKEYS].ob_width)>>1;
  197.  
  198.         icon_anzahl = 0;
  199.         w = (icons[IDISK].ob_width+7)&(~7);
  200.         h = icons[IDISK].ob_height;
  201.         x = 0;
  202.         y = h;
  203.  
  204.         /* Icons auf dem Desktop zählen, positionieren und verstecken */
  205.         for (i =    FIRSTICON; i <= LASTICON; i++)
  206.         {
  207.             if (icon_anzahl == MAX_ICON_ANZ)
  208.             {
  209.                 inote(1, FATALERR, 3);
  210.                 break;
  211.             }
  212.             icon_anzahl++;
  213.             ptr = desktop + i;
  214.             ptr->ob_flags |= HIDETREE;
  215.             ptr->ob_x = x;
  216.             ptr->ob_y = y;
  217.             x += w;
  218.             if (x + w >= desktop->ob_width)
  219.             {
  220.                 x = 0;
  221.                 y += h;
  222.             }
  223.         }
  224.     }
  225.     Last_mouse();
  226.     return rsc_init;
  227. } /* init_resource */
  228.  
  229. /*****************************************************************************/
  230. /* Terminieren des Moduls                                                                                                        */
  231. /*****************************************************************************/
  232.  
  233. VOID term_resource (VOID)
  234. {
  235.     if (rsc_init)
  236.     {
  237.         xrsrc_free(xrsrc_data);
  238.         term_xrsrc();
  239.         v_clsvwk(xrsrc_handle);
  240.         dial_exit();
  241.         nkc_exit();
  242.     }
  243. } /* term_resource */
  244.